今天我們終於要開始瞭解到底要怎麼學了!
首先,我們將問題分為兩類
回歸問題就是我要預測的值是一個實數值,也就是填空題,例如我要預測台股明天多少點,這就是一個回歸問題!
分類問問題就是我要預測的值是哪一個類別,也就是選擇題,例如明天會不會下雨,就是"是或不是"的是非題,對於只有兩個選擇的問題,我們又稱他為二元分類(Binary Classification)。
那今天要跟大家討論的Curve Fitting,是屬於回歸問題。
我們這邊考慮二維空間的情況,以方便作圖,也就是x軸會是我的輸入、y會是我的輸出。
問題是這這樣的:
我先用鉛筆畫一條曲線,然後用原子筆沿著這一條曲線隨便點一些點。點好之後,我用擦布把曲線擦掉。接著我要利用這些點點推測你剛剛的曲線。有了你推測的曲線之後,接下來你給我x值,我就會利用我猜的這條曲線告訴你,這個x對應的y是多少!
我們先把問題分成兩個部份!
先給大家看一張我已經擦掉曲線的圖!
好,有點沒頭緒!
讓我們先定義一下,什麼是好的fitting。
還沒出現的資料我們不知道,我們也先不想管他,我們就看已經出現的這些資料。
我們要畫出一條跟原本很像的線,應該至少就是要通過現在這些已經出現的點吧,沒錯吧!
就像你要準備考試,老師上課洩了幾題,就算剩下的題目你不想管,也至少要準備老師說的那幾題吧!
那怎麼樣才算是你準備好了呢?非常簡單的寫一次那些題目,然後對答案就知道你會不會了。
我們這邊也是一樣的,怎麼樣檢視我們的曲線像不像呢?
就是把現在已經有的資料的x值放到我們的曲線,看一下我們的曲線在那個x值對應的y值是多少!
接著把我們推測的y值與真正的y值相減,這個值的絕對值越小,我們在這個點就fit的越好。
所以整條曲線fitting的好不好,從這個角度來看,就是把每一個點相減的絕對值加起來。
這個值越小,我們的曲線就fit的越好!
我們把我們已經x對應的正確答案稱為t,我們猜測的稱為y
再把剛剛的敘述用數學式表達,就得到
其中 n 是每一筆資料,在這邊就是每一個點;w指的是我們的曲線的係數(上一次有提到,學習就是學習這些係數)
所以我們推測的 y 是怎麼算的呢?
w是曲線的係數,x是我們帶入這個函數的值
舉例來說,若有三個維度:
那我們在這個x得到的y就是 2 (1 + 4 - 3)
利用昨天寫到的表示法來表示的話呢
我們可以簡單的用向量內積來表示這個 y (內積就是兩個向量對應項相乘的加總)
也就是
所以我們的問題就可以寫成
這就是我們在回歸問題中,很常使用的Error funtion!
那為什麼可以亂乘一個值???
你今天是全台灣最窮的人,哪一天全台灣的人錢一起多十倍,雖然你存款數字變大了,可是你還是全台灣最窮!
大概這個概念
所以我們就可以把上述的問題以數學的方式表達!
其中argmin 的意思就是 取讓 E(w) 最小的 w
首先我們先看張圖,這是 圖形
他最小的點在哪?很明顯就是在 x = 0的那個位置。
那0那個位置對於這個曲線有什麼特性呢?
微積分裡面告訴我們,就是他的一次微分等於零!
媽呀微積分是什麼??
這個問題也是很多修了一年微積分之後大一同學的問題,或是某些驚奇四修人的問題。
不過我們這邊只需要大概知道
微分為零,就是極值!
不過這個極值,不一定會是整個曲線上最極的那個極值,也就是Global Extreme,可能僅僅是Local Extreme。但是對於convex function或是concave function,微分為零的那個極就是最極那個!也就是Global的!
詳細的定義大家可以去看微積分,這邊我們知道這個就好了!
回到我們剛剛的圖!很明顯的他是一個convex function!convex就是凸函數,凸函數就是凹的……,我想你還是就記得convex就好了吧,中文名字好神秘。
接著我們要知道convex函數 + convex函數還是convex函數
所以我們可以看出來我們的 E(w) 他是一個convex function!
接著最神奇的步驟來了!
我們令
(那個倒過來的6是偏微分的意思,偏微分你可以直接想像是,除了你要微分的東西之外都把他當成常數)
接著我們就可以求 w !
怎麼得到這個結果的呢?簡單的利用微積分的chain rule就可以了!
我要對E(w)微分,可是E(w)裡面那一個括號的東西我不會微,那怎麼辦?我就把那個括號令為u,對u微分再乘上u對w微分!這就是chian rule!
也就是下式
就會得到我們上面的式子了!
接著經過一些簡單的整理,並且把變數換成以向量形式表示,就可以得到!
這邊的-1次方指的是反矩陣,反矩陣指的是,你跟你的反矩陣相乘,會變成單位矩陣,單位矩陣就是對角線是一剩下都是零的矩陣。
雖然經過一連串的計算,看起來好像很複雜
其實我們最後寫成程式的時候,只會用到
這個式子保證我們所得到的 w 是在現有維度下最接近我們的點的,也就是他的 E(w) 會是所有w中最小的!
看看今天一開始的那個圖
我們讓輸入的 x 從1維到9維來看一下我們fitting的狀況
讓x增加維度的表示法我們就用上一篇提到的phi,也就是這個式子
增加到幾維就是M = 多少
以上大概就是curve fitting的第一個部份 - 推測曲線
程式碼的部份我到完整介紹完再跟大家說明!
正如一開始所說的,你有一條曲線,你拿原子筆順著曲線隨便亂點!
一定很多時候你都不會正好點在曲線上!
不過我們的推測卻是以你亂點的點點來推測,因此這會造成你在推斷沒看過的新資料的時候表現的非常非常的差,可是根據上面的推導,這個w在你看過得資料裡面,是表現最好的。
那我們要怎麼樣解決這樣的狀況呢?
就讓我們明天再來討論囉!
有什麼不懂的地方或是寫錯的地方歡迎留言指教!
教練...我想學微積分.... TAQ
哈哈放心!這邊都沒有用到什麼很難的微積分,微分只要會連鎖律跟偏微分就差不多了,積分的部份因為是機率的積分,而且因為都會是共軛,所以其實湊數字居多,連分部積分都不用會也行XD